package com.yq.day18._02interface;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/18 08:36
 * 接口 解决类的多继承的问题
 *
 * 接口是和类同等级的数据类型，接口不是类
 * 定义 interface 接口名  接口的继承implements 他和类的继承并不冲突
 *接口的实现细节问题:
 *  *      1.如果一个类继承类又实现接口,那么先继承再实现
 *  *      2.接口不受单继承限制,表现在两点:
 *  *          a.一个类可以继承类的同时实现接口
 *  *          b.一个类可以实现多个接口
 *  *
 *  * 使用接口有如下优点：
 *  *      1.接口不受单继承限制，这是接口非常重要的优点。
 *  *      2.接口不是类，它和它的实现类，也不需要存在"is-a"关系
 *  *          接口比抽象类的使用更加灵活。
 *  *      3.程序开发中将接口和它的实现类之间的关系，称之为"like-a"关系。
 *  *          只要是实现了Xxx的功能，就像Xxx。
 *  *          比如一个盒子/箱子,它不是空调
 *  *          但它只要实现了空调的功能,那它就像空调
 *  *
 *  *      4.接口表示一种开发标准，一种规范。
 *  *         表示对功能的扩展，它只关注行为，不关注属性。
 *
 *  接口是抽象的不能new 对象
 *接口中的抽象方法,默认都是"public abstract"修饰的,但是不要写出隐含的修饰符
 */
public class Demo01 {
    public static void main(String[] args) {
        Person p1 = new B();
        p1.test();
        //只能自己调用
        Person.test1();

    }

}
interface Person{
    default void test(){
        System.out.println("我是默认方法，实现类可以选择重写，也可以直接继承！");
    }
    static void test1(){
        System.out.println("静态方法，只能自己调用，实现类不能调用");
    }

}
class B implements Person{
    @Override
    public void test() {
        System.out.println("重写了默认的方法！！");
    }
}
